package com.xiaoshuidi.cloud.module.member.service.securitycheck;

import java.util.*;
import javax.validation.*;
import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.member.controller.admin.securitycheck.vo.*;
import com.xiaoshuidi.cloud.module.member.pojo.securitycheck.SecurityCheckRectificationItemDO;

/**
 * 安全检查整改项 Service 接口
 *
 * @author hans.zhang
 */
public interface SecurityCheckRectificationItemService extends IService<SecurityCheckRectificationItemDO> {

    /**
     * 创建安全检查整改项
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSecurityCheckRectificationItem(@Valid SecurityCheckRectificationItemCreateReqVO createReqVO);

    /**
     * 更新安全检查整改项
     *
     * @param updateReqVO 更新信息
     */
    void updateSecurityCheckRectificationItem(@Valid SecurityCheckRectificationItemUpdateReqVO updateReqVO);

    /**
     * 删除安全检查整改项
     *
     * @param id 编号
     */
    void deleteSecurityCheckRectificationItem(Long id);

    /**
     * 获得安全检查整改项
     *
     * @param id 编号
     * @return 安全检查整改项
     */
    SecurityCheckRectificationItemDO getSecurityCheckRectificationItem(Long id);

    /**
     * 获得安全检查整改项列表
     *
     * @param ids 编号
     * @return 安全检查整改项列表
     */
    List<SecurityCheckRectificationItemDO> getSecurityCheckRectificationItemList(Collection<Long> ids);

    /**
     * 获得安全检查整改项分页
     *
     * @param pageNo 分页查询
     * @param pageSize 分页查询
     * @param securityCheckId 安全检查id
     * @return 安全检查整改项分页
     */
    PageResult<SecurityCheckRectificationItemRespVO> getSecurityCheckRectificationItemPage(@NotNull Integer pageNo,@NotNull Integer pageSize,@NotNull Long securityCheckId);

    /**
     * 获得安全检查整改项列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 安全检查整改项列表
     */
    List<SecurityCheckRectificationItemDO> getSecurityCheckRectificationItemList(SecurityCheckRectificationItemExportReqVO exportReqVO);

    /**
     * 获得整改项隐患图片
     * @param id 整改项id
     * @return
     */
    List<String> getHazardPhoto(Long id);

    /**
     * 获得整改项回复图片
     * @param id 整改项id
     * @return
     */
    List<String> getReturnPhoto(Long id);

    /**
     * 检查是否存在即将到期/已到期未处理的整改项
     * @param loginUserId 当前登录的用户
     * @return
     */
    Integer CheckForExpiringCorrections(Long loginUserId);

    /**
     * 隐患台账
     * @param reqVO
     * @return
     */
    PageResult<HazardLedgerPageRespVO> hazardLedger(HazardLedgerPageReqVO reqVO);

    /**
     * 隐患台账导出查询数据
     * @param reqVO
     * @return
     */
    List<HazardLedgerPageRespVO> hazardLedgerExport(HazardLedgerExportReqVO reqVO);

    /**
     * 当前登录用户负责的整改项
     * @param reqVO
     * @return
     */
    PageResult<HazardLedgerPageRespVO> rectificationItemByUser(HazardLedgerPageReqVO reqVO);

    /**
     * 整改项详情
     * @param id 整改项id
     * @return
     */
    RectificationItemDetailRespVO rectificationItemDetail(Long id);

    /**
     * 整改项回复
     * @param reqVO
     * @return
     */
    Boolean rectificationItemReply(RectificationItemReplyReqVO reqVO);

}
